1. Field of the Invention
The present invention relates generally to data storage, and specifically to file systems.
2. Description of Related Art
Files are typically stored on disk in a hierarchical data structure called a file system. The file system includes a root directory and objects such as files, links, and subdirectories. The hierarchical arrangement was popularized in the UNIX operating system, and was also adopted in the Microsoft MS-DOS operating system for personal computers. The hierarchical arrangement survives today in various UNIX-based file systems, the Microsoft Windows operating system, and many other operating systems. Popular UNIX-based file systems are the UNIX file system (ufs), which is a version of Berkeley Fast File System (FFS) integrated with a vnode/vfs structure, and the System V file system (s5fs). The implementation of the ufs and s5fs file systems is described in Chapter 9, pp. 261-289 of Uresh Vahalia, Unix Internals: The New Frontiers, 1996, Prentice Hall, Inc., Simon and Schuster, Upper Valley River, N.J. 07458. The implementation of the MS-DOS file system is described in Chapter 5, pp. 99-123 of Peter Norton and Richard Wilton, The New Peter Norton Programmer""s Guide to The IBM PC and PS/2, 1988, Microsoft Press, Redmond, Wash. 98073.
One goal of operating system programmers is to relieve application programmers from dealing with problems introduced by the way that files are stored in physical storage devices such as disk drives. In the early development of Unix, for example, application prograrnmers had to deal with the problem that common storage devices were relatively expensive, and removable storage media was typically used to reduce storage costs. The file system was divided into subsystems, each including at least a respective root directory, which in turn could include subdirectories and files. The subsystems were stored in respective units of removable storage media, such as disk packs. The subsystems would be attached, or xe2x80x9cmounted,xe2x80x9d into the file system when the operating system found the removable storage media to be installed in a storage device. Upon request of an application program, the operating system would provide a report of the subsystems presently mounted to the file system. The user or application programmer had to deal with processing delays due to the physical installing and removing of the removable storage. The user or application programmer was prohibited from linking a file in one file system to a file in another file system. Each subsystem also had fixed upper limits on the size of the subsystem.
Continuing advances in storage technology have reduced the cost of storage devices to such an extent that removable storage is becoming obsolete for network storage applications other than archival storage. A network storage system can provide a very large capacity of storage at low cost using a redundant array of inexpensive magnetic disk drives. Such a network storage system may include at least 20 terabytes (TB) of data storage. Further details regarding such a high-capacity network storage system are found in Vahalia et al., U.S. Pat. No. 5,893,140, issued Apr. 6, 1999, and entitled xe2x80x9cFile Server Having A File System Cache And Protocol For Truly Safe Asynchronous Writes,xe2x80x9d incorporated herein by reference.
The increase in capacity of network file servers has permitted application programmers to increase the size of the file systems up to at least 100 gigabytes. Such a large file system, however, presents a problem for crash recovery. In order to recover from a system crash, the file system must be checked for consistency. The file system may not be consistent because all of the file system updates may not have been written from the file system cache to disk. In this case, however, the file system updates may be recoverable from a log file, and used to repair the file system. Unfortunately, the process of checking and repairing a very large file system after a system crash may take hours.
In accordance with one aspect, the invention provides a method of building a meta file system. The method includes selecting a file subsystem in a first file system cell, and removing the selected file subsystem from the first file system cell, converting the selected file subsystem into a second file system cell, and inserting a link in the first file system cell from a directory entry for the selected file subsystem to a root directory of the second file system cell.
In accordance with another aspect, the invention provides a meta file system contained in data storage. The meta file system includes a multiplicity of file system cells linked in a hierarchy by direct links in the file system cells, the direct links being hidden from a user or application program in such a way that the hierarchy appears to the user or application program as a single file system. In accordance with yet another aspect, the invention provides a method of operating a network file server to provide users in the network with concurrent access to objects in a user-visible file system. The objects are distributed over a plurality of file system cells in data storage of the network file server. The network file server has a plurality of data mover computers for responding to users requesting access to the data storage. The method includes configuring the data mover computers so that each data mover computer has exclusive management of access to a respective subset of the file system cells. When each data mover computer receives a user request for access to an object in the uservisible file system, the data mover computer directs the request to the data mover computer that has exclusive management of access to a respective one of the file system cells containing the object.
In accordance with a final aspect, the invention provides a program storage device containing a program executable by a network file server. The network file server is adapted for coupling to at least one client for access of the client to a user-visible file system in storage in the network file server. Objects in the user-visible file system are contained in a plurality of file system cells. The program includes a meta file system manager for receiving file system access calls intended for a file system manager, and the meta file system manager is executable for acting as an intermediary between the client and the file system manager in order to follow hidden links between the file system cells so that the file system cells appear to the client as one file system.